        .xlist
; Include file - EPOCLIB.INC
; Epoc/Os plib standard include file.
; Copyright (c) Psion PLC 1989-90.
;
;  VER    DATE    BY  DESCRIPTION
; ----- -------- ---- -----------
; 2.00F 30/09/90 NSM  Final release
;
EPOCLIB_INC	equ	1
;
_TANDW	=	0
ifdef   LATTICE
CodeSeg macro
pgroup  group   prog
PGROUP	equ	<pgroup>
prog    segment byte public 'prog'
        assume  cs:pgroup
        endm
EndCodeSeg macro
prog    ends
        endm
DataSeg macro   
dgroup  group   data,udata
DGROUP	equ	<dgroup>
data    segment word public 'data'
        assume  ds:dgroup,es:dgroup,ss:dgroup
        endm
EndDataSeg macro
data    ends
        endm
UDataSeg macro  
udata   segment word public 'data'
        endm
EndUDataSeg macro
udata   ends
        endm
GLREF_D MACRO   NAME,TYPE
        EXTRN	NAME:TYPE
        ENDM
GLDEF_D MACRO   NAME,TYPE
        PUBLIC	NAME
NAME	label   TYPE
        ENDM
GLREF_C MACRO   NAME
        EXTRN	NAME:NEAR
        ENDM
endif
;
ifdef   TURBOC
_TANDW	=	1
CodeSeg macro
PGROUP  group   _TEXT
pgroup	equ	<PGROUP>
_TEXT   segment byte public 'CODE'
        assume  cs:PGROUP
        endm
EndCodeSeg macro
_TEXT   ends
        endm
DataSeg macro   
DGROUP  group   _DATA,_BSS
dgroup	equ	<DGROUP>
_DATA   segment word public 'DATA'
        assume  ds:DGROUP,es:DGROUP,ss:DGROUP
        endm
EndDataSeg macro
_DATA   ends
        endm
UDataSeg macro  
_BSS    segment word public 'BSS'
        endm
EndUDataSeg macro
_BSS    ends
        endm
GLREF_D MACRO   NAME,TYPE
        EXTRN  _&NAME:TYPE
NAME    EQU        _&NAME
        ENDM
GLDEF_D MACRO   NAME,TYPE
        PUBLIC     _&NAME
_&NAME  label    TYPE
NAME    EQU        _&NAME
        ENDM
GLREF_C MACRO   NAME
        EXTRN  _&NAME:NEAR
NAME    EQU        _&NAME
        ENDM
endif
ifdef   WATCOMC
REG_PARAM	equ	1
ifdef	_MSC
_TANDW	=	1
endif
CodeSeg macro
PGROUP  group   _TEXT
pgroup	equ	<PGROUP>
_TEXT   segment byte public 'CODE'
        assume  cs:PGROUP
        endm
EndCodeSeg macro
_TEXT   ends
        endm
DataSeg macro   
DGROUP  group   _DATA,_BSS
dgroup	equ	<DGROUP>
_DATA   segment word public 'DATA'
        assume  ds:DGROUP,es:DGROUP,ss:DGROUP
        endm
EndDataSeg macro
_DATA   ends
        endm
UDataSeg macro  
_BSS    segment word public 'BSS'
        endm
EndUDataSeg macro
_BSS    ends
        endm
GLREF_D MACRO   NAME,TYPE
        EXTRN  NAME&_:TYPE
NAME    EQU        NAME&_
        ENDM
GLDEF_D MACRO   NAME,TYPE
        PUBLIC     NAME&_
NAME&_  label    TYPE
NAME    EQU        NAME&_
        ENDM
GLREF_C MACRO   NAME
        EXTRN  NAME&_:NEAR
NAME    EQU        NAME&_
        ENDM
endif
ifdef   JPIC
REG_PARAM	equ	1
ifdef	_MSC
_TANDW	=	1
endif
CodeSeg macro
_TEXT   segment byte public 'CODE'
        assume  cs:_TEXT
        endm
EndCodeSeg macro
_TEXT   ends
        endm
DataSeg macro   
DGROUP  group   _DATA,_BSS
dgroup	equ	<DGROUP>
_DATA   segment word public 'DATA'
        assume  ds:DGROUP,es:DGROUP,ss:DGROUP
        endm
EndDataSeg macro
_DATA   ends
        endm
UDataSeg macro  
_BSS    segment word public 'BSS'
        endm
EndUDataSeg macro
_BSS    ends
        endm
GLREF_D MACRO   NAME,TYPE
        EXTRN  _&NAME:TYPE
NAME    EQU        _&NAME
        ENDM
GLDEF_D MACRO   NAME,TYPE
        PUBLIC     _&NAME
_&NAME  label    TYPE
NAME    EQU        _&NAME
        ENDM
GLREF_C MACRO   NAME
        EXTRN  _&NAME:NEAR
NAME    EQU        _&NAME
        ENDM
endif
;
LOCAL_D MACRO   NAME,TYPE
NAME    label      TYPE
        ENDM
;
ProcBegin macro _Name,_Type,_Registers
ifdef	TURBOC
	ProcBeginBody _&_Name,_Type,_Registers
endif
ifdef	JPIC
	ProcBeginBody _&_Name,_Type,_Registers
endif
ifdef	WATCOMC
	ProcBeginBody _Name&_,_Type,_Registers
_Name    EQU        _Name&_
endif
ifdef	LATTICE
	ProcBeginBody _Name,_Type,_Registers
endif
	endm
ProcBegin@ macro _Name,_Type,_Registers
	ProcBeginBody _Name,_Type,_Registers
	endm
ProcBeginBody macro _Name,_Type,_Registers
_DI = 0
_SI = 0
if	_TANDW
ifnb    <_Registers>
        irpc    _flags,_Registers
ifidni  <_flags>,<D>
_DI     = 1
endif
ifidni  <_flags>,<S>
_SI     = 1
endif
        endm
endif
endif
;
ProcEnd macro _flag
ifb     <_flag>
if      _DI
        pop     di
endif
if      _SI
        pop     si
endif
if	_TANDW
ifidni  <_Type>,<bp>
        pop     bp
endif
endif
ifdef	LATTICE
ifidni  <_Type>,<bp>
        pop     bp
endif
endif
        ret
endif
&_Name  endp
        endm
;
        public  _Name
ifidni  <_Type>,<far>
_Name   proc    far
else
_Name   proc    near
endif
ifidni  <_Type>,<bp>
if	_TANDW
        push    bp
        mov     bp, sp
endif
ifdef	LATTICE
        push    bp
        mov     bp, sp
endif
Arg1    equ     <[bp+4]>
Arg2    equ     <[bp+6]>
Arg3    equ     <[bp+8]>
Arg4    equ     <[bp+10]>
Arg5    equ     <[bp+12]>
Arg6    equ     <[bp+14]>
Arg7    equ     <[bp+16]>
Arg8    equ     <[bp+18]>
endif
ifidni  <_Type>,<bx>
if	_TANDW
        mov     bx, sp
endif
ifdef LATTICE
        mov     bx, sp
endif
Arg1    equ     <[bx+2]>
Arg2    equ     <[bx+4]>
Arg3    equ     <[bx+6]>
Arg4    equ     <[bx+8]>
Arg5    equ     <[bx+10]>
Arg6    equ     <[bx+12]>
Arg7    equ     <[bx+14]>
Arg8    equ     <[bx+16]>
endif
if      _SI
        push    si
endif
if      _DI
        push    di
endif
        endm
;
        .list
